package emu.grasscutter.server.packet.send;

import emu.grasscutter.game.avatar.Avatar;
import emu.grasscutter.game.inventory.*;
import emu.grasscutter.net.packet.*;
import emu.grasscutter.net.proto.AvatarEquipChangeNotifyOuterClass.AvatarEquipChangeNotify;

public class PacketAvatarEquipChangeNotify extends BasePacket {

    public PacketAvatarEquipChangeNotify(Avatar avatar, GameItem item) {
        super(PacketOpcodes.AvatarEquipChangeNotify);

        AvatarEquipChangeNotify.Builder proto =
                AvatarEquipChangeNotify.newBuilder()
                        .setAvatarGuid(avatar.getGuid())
                        .setEquipType(item.getEquipSlot())
                        .setItemId(item.getItemId())
                        .setEquipGuid(item.getGuid());

        if (item.getItemData().getEquipType() == EquipType.EQUIP_WEAPON) {
            proto.setWeapon(item.createSceneWeaponInfo());
        } else {
            proto.setReliquary(item.createSceneReliquaryInfo());
        }

        this.setData(proto);
    }

    public PacketAvatarEquipChangeNotify(Avatar avatar, EquipType slot) {
        super(PacketOpcodes.AvatarEquipChangeNotify);

        AvatarEquipChangeNotify.Builder proto =
                AvatarEquipChangeNotify.newBuilder()
                        .setAvatarGuid(avatar.getGuid())
                        .setEquipType(slot.getValue());

        this.setData(proto);
    }
}
